package com.dupt.system.service.impl;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import com.dupt.common.utils.DateUtils;
import com.dupt.common.utils.SecurityUtils;
import com.dupt.system.domain.MaterialDetial;
import com.dupt.system.domain.vo.MaterialBillDetialVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dupt.system.mapper.MaterialBillDetialMapper;
import com.dupt.system.domain.MaterialBillDetial;
import com.dupt.system.service.IMaterialBillDetialService;

/**
 * 物料清单明细Service业务层处理
 * 
 * @author zhuanyu.sun
 * @date 2025-06-15
 */
@Service
public class MaterialBillDetialServiceImpl implements IMaterialBillDetialService
{
    @Autowired
    private MaterialBillDetialMapper materialBillDetialMapper;

    /**
     * 查询物料清单明细
     * 
     * @param materialBillMainId 物料清单主表主键
     * @return 物料清单明细
     */
    @Override
    public List<MaterialBillDetialVo> selectMaterialBillDetialByMaterialBillMainId(String materialBillMainId)
    {
        return materialBillDetialMapper.selectMaterialBillDetialByMaterialBillMainId(materialBillMainId);
    }

    /**
     * 查询物料清单明细列表
     * 
     * @param materialBillDetial 物料清单明细
     * @return 物料清单明细
     */
    @Override
    public List<MaterialBillDetial> selectMaterialBillDetialList(MaterialBillDetial materialBillDetial)
    {
        return materialBillDetialMapper.selectMaterialBillDetialList(materialBillDetial);
    }

    /**
     * 新增物料清单明细
     * 
     * @param materialBillDetials 物料清单明细
     * @param materialBillMainId 物料清单主表ID
     * @return 结果
     */
    @Override
    public int insertMaterialBillDetial(List<MaterialBillDetial> materialBillDetials, String materialBillMainId)
    {

        List<MaterialBillDetial> newEntities = materialBillDetials.stream().map(entity -> {
            entity.setCreateTime(DateUtils.getNowDate());
            entity.setMaterialBillMainId(materialBillMainId);
            entity.setCreateBy(SecurityUtils.getLoginUser().getUsername());
            return entity;
        }).collect(Collectors.toList());
        //将明细数据批量保存到数据库中
        return materialBillDetialMapper.batchInsertMaterialBillDetial(newEntities);
    }

    /**
     * 修改物料清单明细
     * 
     * @param materialBillDetial 物料清单明细
     * @return 结果
     */
    @Override
    public int updateMaterialBillDetial(MaterialBillDetial materialBillDetial)
    {
        materialBillDetial.setUpdateTime(DateUtils.getNowDate());
        return materialBillDetialMapper.updateMaterialBillDetial(materialBillDetial);
    }

    /**
     * 批量删除物料清单明细
     * 
     * @param materialBillMainIds 需要删除的物料清单主表主键
     * @return 结果
     */
    @Override
    public int deleteMaterialBillDetialByMaterialBillMainIds(String[] materialBillMainIds)
    {
        return materialBillDetialMapper.deleteMaterialBillDetialByMaterialBillMainIds(materialBillMainIds);
    }

    /**
     * 删除物料清单明细信息
     * 
     * @param materialBillMainId 物料清单主表主键
     * @return 结果
     */
    @Override
    public int deleteMaterialBillDetialByMaterialBillMainId(String materialBillMainId)
    {
        return materialBillDetialMapper.deleteMaterialBillDetialByMaterialBillMainId(materialBillMainId);
    }

    /**
     * 批量查询物料清单明细
     *
     * @param mainIds 需要查询的物料清单主表主键
     * @return 批量查询结果
     */
    @Override
    public List<MaterialBillDetialVo> batchSelectMaterialBillDetialByMainIds(List<String> mainIds) {
        return materialBillDetialMapper.batchSelectMaterialBillDetialByMainIds(mainIds);
    }
}
